home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / bpl70n12.zip / TESTPRGS.ZIP / STRTEST.PAS < prev    next >
Pascal/Delphi Source File  |  1993-03-07  |  3KB  |  76 lines

  1. PROGRAM StrTest; { Copyright (c) 1991-1993 Norbert Juffa }
  2.  
  3. { StrTest tests correct implementation and speed of STRING operations. }
  4.  
  5. {$A+,B-,D+,E+,F-,G-,I-,L+,N-,O-,R-,S-,V-,X-}
  6. {$M 16384,0,655360}
  7.  
  8. USES Time;
  9.  
  10. VAR
  11.   I: INTEGER;
  12.   U: STRING [1];
  13.   Q: STRING [100];
  14.   S: STRING [55];
  15.   T: STRING [60];
  16.   V: STRING;
  17.   Start: LONGINT;
  18.   L: WORD;
  19.  
  20. CONST TestStr: ARRAY [1..22] OF CHAR = 'HELLO, THIS IS A TEST ';
  21.  
  22. BEGIN
  23.    WriteLn ('String Function Compatibility and Speed Test');
  24.    WriteLn;
  25.    Start := Clock;
  26.    FOR L := 1 TO 1000 DO BEGIN
  27.       T := 'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 1234567890';
  28.       Insert (T, T, 1);
  29.       Delete (T, 55, 54);
  30.       S := Copy (T, -5, 2);     {'TH'}
  31.       U := Copy (T, 7, 4);      {'I'}
  32.       S := S + U;               {'THI'}
  33.       Q := Copy (T, 32, 70);    {'THE LAZY DOG 1234567890'}
  34.       Delete (Q, 2, 1);         {'TE LAZY DOG 1234567890'}
  35.       Delete (Q, 100, 2);       {'TE LAZY DOG 1234567890'}
  36.       Delete (Q, 3, -4);        {'TE LAZY DOG 1234567890'}
  37.       Delete (Q, 3, 10);        {'TE1234567890'}
  38.       I := Pos ('S', T);        {25}
  39.       Insert(Copy(T,I,200),Q,3);{'TES OVER THE LAZY DOG 12345678901234567890'}
  40.       Delete (Q, 4, 6);         {'TESTHE LAZY DOG 12345678901234567890}
  41.       S := S + T [25];          {'THIS'}
  42.       S := S + Copy (S, 3, -5) + Copy (S, 3, 2);  {'THISIS'}
  43.       V := T;                   {'THE QUICK BROWN FOX JUMPS OVER THE LAZY ..'}
  44.       Delete (V, -10, 47);      {'AZY DOG 1234567890'}
  45.       IF (Copy (V, -7, -1) = '') AND (Pos ('DOG', V) = 5) THEN {TRUE}
  46.          Insert (V, S, 200);    {'THISISAZY DOG 1234567890'}
  47.       U := Copy (T, 44, 40);    {' '}
  48.       Insert (U, S, 5);         {'THIS ISAZY DOG 1234567890'}
  49.       I := Pos ('ZY', S);       {9}
  50.       Delete (S, I, -5);        {'THIS ISAZY DOG 1234567890'}
  51.       Insert (Copy(S,5,1),S,8); {'THIS IS AZY DOG 1234567890'}
  52.       Delete (S, 10, 16);       {'THIS IS A0'}
  53.       IF S [Length (S)] = '0' THEN {TRUE}
  54.          S := S + Q;            {'THIS IS A0TESTHE LAZY DOG 123456789012345...'}
  55.       V := Copy (S, Length (S) - 19, 10); {'1234567890'}
  56.       IF V = Copy (S, Length (S) - 9, 10) THEN {TRUE}
  57.          Delete (S, 15, 3 * Length (V)+2); {'THIS IS A0TEST'}
  58.       Insert ('', S, 0);        {'THIS IS A0TEST'}
  59.       Insert(Copy(S,5,1),S,11); {'THIS IS A0 TEST'}
  60.       Insert ('HELLO', S, -4);  {'HELLOTHIS IS A0 TEST'}
  61.       Insert (',', S, 6);       {'HELLO,THIS IS A0 TEST'}
  62.       Delete (S, Pos ('TEST', S) - 2, 1); {'HELLO,THIS IS A TEST'}
  63.       Delete (Q, 0, 32767);     {''}
  64.       Q := Q + ' ';             {' '}
  65.       Insert (Q, S, 7);         {'HELLO, THIS IS A TEST'}
  66.       Insert (Q, S, 255);       {'HELLO, THIS IS A TEST '}
  67.       IF (S = TestStr) AND (Q = ' ') AND
  68.          (V = '1234567890') AND (T = 'THE QUICK BROWN FOX JUMPS OVER THE'+
  69.          ' LAZY DOG 1234567890') AND (L=1) THEN BEGIN
  70.          WriteLn ('Test OK');
  71.          WriteLn;
  72.          END;
  73.    END;
  74.    WriteLn ('String-Benchmark completes in', Clock-Start:5, ' ms');
  75. END.
  76.